package com.syni.mdd.yhd.common.all.service;

import com.syni.mdd.yhd.common.all.dao.jpa.BmsUserReceCouponDao;
import com.syni.mdd.yhd.common.all.dto.requestDto.BaseReDto;
import com.syni.mdd.yhd.common.all.entity.coupon.BmsUserReceCoupon;
import com.syni.mdd.sjb.common.component.utils.common.utils.ParamsMap;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @className
 * @description TOO
 * @Author cfx
 * @DATE 2019/4/9 12:04
 * @VERSION 1.0
 **/
public interface BmsUserReceCouponService {

    BmsUserReceCouponDao getBaseDao();

    Map<String, Object> userGetCoupon(BaseReDto baseReDto);

    Map<String, Object> userGetCoupon_V4(BaseReDto baseReDto);

    Map<String, Object> getMyFullCoupon(BaseReDto baseReDto);

    void updateFullCouponIsUse(Integer fullCouponId);

    Map<Integer, BmsUserReceCoupon> getUserFullCouponMap(Set<Integer> userReceFullIds);

    void removeFullCouponUseNum(Integer fullCouponId);

    Map<Integer, Map<String,Double>> countOrderTotalReceive(Set userReceIds);

    Map<String, Object> getMyFullCouponv2(ParamsMap paramsMap);

    Map<String, Object> userGetOverExpireCoupon(ParamsMap paramsMap);

    Map<String, Object> userGetOverExpireCoupon_V4(ParamsMap paramsMap);

    Map<String, Object> verBusinessCoupon(Integer verUserId,Integer userCouponId,Integer businessId);

    Map<Integer,Integer> getUserReceOver(Integer userId,Set<Integer> businessCouponIds);

    Map<String,Object> getMyFullCoupon_V3(ParamsMap paramsMap);

    Map<String, Object> getMyFullCoupon_V4(ParamsMap paramsMap);

    Map<String, Object> showReceCouponDetail(ParamsMap paramsMap);

    void setBmsUserReceCoupon(List<BmsUserReceCoupon> bmsUserReceCoupons);


    Map<String, Object> getMyCoupons(ParamsMap paramsMap);

    boolean checkCouponBelongBusiness(Integer businessUserId, Integer receId);
}
